/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.domain.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.comac.ins.common.core.utils.DateUtils;
import com.comac.ins.common.core.utils.StringUtils;
import com.comac.ins.isfd.constant.enums.PartFileSizeUnitEnum;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;


/**
 * IsfdMeshModelCollectVo的树结构
 *
 * @author hxloongs
 * @date 2025-01-14
 */
@Data
@AutoMapper(target = IsfdMeshModelCollectVo.class)
public class IsfdMeshModelCollectTreeVo implements Serializable {


    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private Long id;

    /**
     * 父节点
     */
    @ExcelProperty(value = "父节点")
    private Long parentId;

    /**
     * 压缩包id
     */
    @ExcelProperty(value = "压缩包id")
    private Long topParentId;

    /**
     * 上传时刻的时间戳
     */
    @ExcelProperty(value = "上传时刻的时间戳")
    private Long uploadTime;

    /**
     * 上传时刻的时间字符串，展示用
     */
    @ExcelProperty(value = "上传时刻的时间字符串，展示用")
    private String uploadTimeShow;

    public String getUploadTimeShow() {
        return DateUtils.parseDateToLong(DateUtils.YYYY_MM_DD_HH_MM_SS, this.uploadTime);
    }

    /**
     * 文件名
     */
    @ExcelProperty(value = "文件名")
    private String fileName;

    /**
     * 文件全名
     */
    @ExcelProperty(value = "文件全名")
    private String fullFileName;

    /**
     * 文件大小
     */
    @ExcelProperty(value = "文件大小")
    private Long fileSize;

    /**
     * 文件大小携带单位
     */
    private String fileSizeWithUnit;

    public String getFileSizeWithUnit() {
        return PartFileSizeUnitEnum.getFileSizeWithUnit(fileSize);
    }


    /**
     * 解析文件类型（compressed/dir/file）
     */
    @ExcelProperty(value = "解析文件类型")
    private String fileType;

    /**
     * 文件后缀（rar/zip/bdf/out/dat）
     */
    @ExcelProperty(value = "文件后缀")
    private String fileSuffix;

    /**
     * 存储地址
     */
    @ExcelProperty(value = "存储地址")
    private String fileUrl;

    /**
     * 机型编码
     */
    @ExcelProperty(value = "机型编码")
    private String modelNumber;

    /**
     * 批次号
     */
    @ExcelProperty(value = "批次号")
    private String batchNumber;

    /**
     * 部段编号
     */
    @ExcelProperty(value = "部段编号")
    private String sectionNumber;

    /**
     * 部段名称
     */
    @ExcelProperty(value = "部段名称")
    private String sectionName;

    /**
     * 部段名称，部段-子部段
     */
    @ExcelProperty(value = "部段总名称，部段-子部段")
    private String sectionAndChildSectionName;

    public String getSectionAndChildSectionName() {
        String result = "";
        if (StringUtils.isNotBlank(this.sectionName)) {
            result = this.sectionName;
        }

        if (StringUtils.isNotBlank(this.childSectionName)) {
            result = StringUtils.isNotBlank(result) ? "_" + this.childSectionName : this.childSectionName;
        }
        return result;
    }

    /**
     * 子部段
     */
    @ExcelProperty(value = "子部段")
    private String childSectionNumber;

    /**
     * 子部段名称
     */
    @ExcelProperty(value = "子部段名称")
    private String childSectionName;

    /**
     * 是否通过质量检测,0-通过，1-不通过
     */
    @ExcelProperty(value = "是否通过质量检测,0-通过，1-不通过")
    private Long qualityCheck = 0L;

    /**
     * 是否被过滤,默认0没被过滤 0-没被过滤，1-被过滤
     *
     * @see com.comac.ins.isfd.constant.enums.IsfdMeshModelFilteredEnum
     */
    private Integer filtered = 0;


    /**
     * 子集合对象
     */
    private List<IsfdMeshModelCollectTreeVo> children;
}
